import { getDateParse } from "@/utils/time";

export const validatorDateRangeRule = (value: string[], callback: Function, config: ObjValueStr = {}) => {
    // message: string = '有效期', storeEnd: string = '', contrastEnd: string = '', contrastEndMessage: string = '活动'
    const message: string = config.message || '有效期';
    const contrastEndMessage: string = config.contrastEndMessage || '活动';
    if (!value.length) {
        return callback(new Error(`请选择${message}`));
    }
    const nowParse = getDateParse();// 当前时间 时间戳
    const startParse = getDateParse(value[0]);// 开始时间 时间戳
    const endParse = getDateParse(value[1]);// 结束时间 时间戳
    // 活动结束需小于有效期结束时间
    if (config.contrastEnd) {
        const contrastEndParse = getDateParse(config.contrastEnd);
        if (endParse <= contrastEndParse) {
            return callback(new Error(`${message}结束时间必须大于${contrastEndMessage}结束时间`));
        }
    }
    if (config.storeEnd) {
        const storeEndParse = getDateParse(config.storeEnd);
        if (endParse < storeEndParse) {
            return callback(new Error(`${message}不可缩短`));
        }
    }
    if (endParse < nowParse) {
        return callback(new Error('结束时间需大于当前时间'));
    }
    if (endParse <= startParse) {
        return callback(new Error('结束时间需大于开始时间'));
    }
    callback()
}

export const validatorValidPeriodRule = (value: number, callback: Function, config: ObjValueStr = {}) => {
    const message: string = config.message || '有效时长';
    if (!value && value !== 0) {
        return callback(new Error(`请输入${message}`));
    }
    if (value < 0) {
        return callback(new Error(`${message}需大于等于0`));
    }
    if (config.storeValidPeriod) {
        if (+value < +config.storeValidPeriod) {
            return callback(new Error(`${message}不可缩短`));
        }
    }
    callback()
}


